#pragma GCC optimize(2)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#include <vector>

/*
just an implimemnt question we need to take care some small details

*/


using namespace std;
using LL = long long;

int main(){
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, p;
    string s;
    
    cin >> n >> p;
    cin >> s;

    s = "?" + s;
    bool flag = true;
    for(int i = 1; i <= n; i ++){
        if(s[i] == '.'){
            if(i - p >= 1){
                if(s[i - p] == '0'){
                    s[i] = '1';
                    flag = false;
                    break;
                }else if(s[i - p] == '1'){
                    s[i] = '0';
                    flag = false;
                    break;
                }else{
                    s[i - p] = '1';
                    s[i] = '0';
                    flag = false;
                    break;
                }
            }

            if(i + p <= n){
                if(s[i + p] == '0'){
                    s[i] = '1';
                    flag = false;
                    break;
                }else if(s[i + p] == '1'){
                    s[i] = '0';
                    flag = false;
                    break;
                }else{
                    s[i] = '0';
                    s[i + p] = '1';
                    flag = false;
                    break;
                }
            }
        }
    }

    for(int i = 1; i <= n; i ++){
        if(s[i] == '1'){
            if(i - p >= 1){
                if(s[i - p] == '0'){
                    flag = false;
                    break;
                }
            }

            if(i + p <= n){
                if(s[i + p] == '0'){
                    flag = false;
                    break;
                }
            }
        }else if(s[i] == '0'){
            if(i - p >= 1){
                if(s[i - p] == '1'){
                    flag = false;
                    break;
                }
            }

            if(i + p <= n){
                if(s[i + p] == '1'){
                    flag = false;
                    break;
                }
            }
        }
    }

    if(flag){
        cout << "No";
        return 0;
    }

    for(int i = 1; i <= n; i ++){
        if(s[i] == '.'){
            s[i] = '0';
        }
    }

    for(int i = 1; i <= n; i ++) cout << s[i];


    return 0;
}